//
//  YYRealmOperation.swift
//  YYProject
//
//  Created by 陆文宇 on 2017/8/10.
//  Copyright © 2017年 陆文宇. All rights reserved.
//

import RealmSwift

final class YYRealm {
    
    class func initialize() -> Realm {
        do {
            return try Realm()
        } catch let error {
            yy_Log("realm initialize fail: \(error)")
        }
        return try! Realm()
    }
    
    class func async(_ closure: @escaping () -> Void) {
        DispatchQueue(label: "realm_background").async {
            autoreleasepool {
                closure()
            }
        }
    }
    
    class var realmVersion: UInt64 {
        
        set {
            let config = Realm.Configuration(
                // 设置新的架构版本。这个版本号必须高于之前所用的版本号
                // （如果您之前从未设置过架构版本，那么这个版本号设置为 0）
                schemaVersion: newValue,
                
                // 设置闭包，这个闭包将会在打开低于上面所设置版本号的 Realm 数据库的时候被自动调用
                migrationBlock: { migration, oldSchemaVersion in
                    // 目前我们还未进行数据迁移，因此 oldSchemaVersion == 0
                    if (oldSchemaVersion < newValue) {
                        // 什么都不要做！Realm 会自行检测新增和需要移除的属性，然后自动更新硬盘上的数据库架构
                    }
            })
            
            // 告诉 Realm 为默认的 Realm 数据库使用这个新的配置对象
            Realm.Configuration.defaultConfiguration = config
        }
        
        get {
            return Realm.Configuration.defaultConfiguration.schemaVersion
        }
        
    }
    
}

